package com.example.controller;

import com.example.domain.Songlist;
import com.example.exception.Result;
import com.example.service.SonglistService;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import java.util.List;

/**
 * @Description:
 * @Author: Ma_XiaoLong
 * @CreateTime： 2024/1/15 11:05
 */


@Slf4j
@RestController            
public class SonglistController {
    @Autowired
    private SonglistService songlistService;

    @GetMapping("/admin/songlist")//1. 请求方式；2.请求地址、请求参数(query、path、body)
    public Result songlist(Songlist songlist) {
        log.info("查询歌单列表请求参数：{}", songlist);
        //封装分页对象，响应给前端
        List<Songlist> songlists = songlistService.getListBySonglist(songlist);
        PageInfo<Songlist> pageInfo = new PageInfo<>(songlists);
        System.out.println("pageInfo = " + pageInfo);
        return Result.success("查询成功!" + pageInfo);

    }

    //根据id获取歌单详情
    //请求方式：GET
    //请求地址：/admin/songlist/1,
    //请求参数：path,只有一个id
    //请求响应数据 歌单详细信息 songlist
    @GetMapping("/admin/songlist/{id}")
    public Result getSonglistById(@PathVariable("id") Integer songlistId) {
        log.info("根据ID获取歌单详细信息接口：{}", songlistId);
        Songlist songlist = songlistService.getById(songlistId);

        return Result.success("查询成功" + songlist);
    }

    /**
     * @Description: TODO
     * @Author: Ma_XiaoLong
     * @CreateTime: 2024/1/17 10:34
     * @param: songlist
     * @return: com.example.exception.Result
     **/
    //根据ID修改歌单信息
    //请求方式：PUT
    //请求地址：/admin/songlist
    //请求参数：body,封装了id以及其他要修改的信息
    //响应数据：成功与否状态
    /*@PutMapping("/admin/songlist")
    public Result updateSonglist(@RequestBody Songlist songlist) {
        log.info("更新歌单信息：{}", songlist);
        int rows = songlistService.updateById(songlist);
        if (rows != 1) {
            return Result.error("666", "更新失败");
        }
        return Result.success("更新成功！");
    }*/

    /**
     * 新增歌单
     *
     * @Description:
     * @Author: Ma_XiaoLong
     * @CreateTime: 2024/1/17 10:50
     * @param: songlist
     * @return: com.example.exception.Result
     **/
    //新增歌单
    //请求方式：POST
    //请求地址：/admin/songlist
    //请求参数：body,封装了除id（id是插入之后才生成的）以外的其他要新增的信息
    //响应数据：成功与否状态
    @PutMapping("/admin/songlist")
    public Result addSonglist(@RequestBody Songlist songlist) {
        log.info("新增歌单信息：{}", songlist);
        int rows = songlistService.saveSonglist(songlist);
        if (rows != 1) {
            return Result.faile( "新增失败");
        }
        return Result.success("新增成功！");
    }

    //根据ID删除歌单
    //请求方式：DELETE
    //请求地址：/admin/songlist/1
    //请求参数：path，只有一个id
    //响应数据：成功与否状态
    @DeleteMapping("/admin/songlist/{id}")
    public Result deleteById(@PathVariable("id") Integer id) {
        log.info("删除歌单：{}", id);
        int rows = songlistService.deleteById(id);
        if (rows != 1) {
            return Result.faile( "删除失败");
        }
            return Result.success("新增成功！" + rows);
    }
}
